package com.asf.sofom.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import com.asf.sofom.domain.FormDomicilios;
import com.asf.sofom.domain.ODomicilios;
import com.asf.sofom.domain.OPersona;
import com.asf.sofom.repository.DomiciliosDao;
import com.asf.sofom.service.SimplePersonaManager;

@Controller
@SessionAttributes
@RequestMapping(value = "/direcciones")
public class DomiciliosFormController {
	
	@Autowired
	SimplePersonaManager simplePersonaManager;
	@Autowired
	DomiciliosDao domiciliosDao;
	
	@RequestMapping(method = RequestMethod.POST, params="Buscar")
	public String buscaUsuario(@ModelAttribute("altaDomicilio")FormDomicilios altaDomicilio, BindingResult result, Model m){
		OPersona persona = new OPersona();
		persona.setId(altaDomicilio.getId_persona());
		List<OPersona> lp = simplePersonaManager.buscaPersona(persona);
		if(lp.isEmpty()){
			System.out.println("NO HAY RESULTADOS EN PERSONAS");
			return "/direcciones";
		}	
		persona = lp.get(0);
		altaDomicilio.setNombre(persona.getNombre());
		altaDomicilio.setApellidop(persona.getApellido_p());
		altaDomicilio.setApellidom(persona.getApellido_m());
		System.out.println("RESDOM" + persona.getNombre());
		return "/direcciones";
	}
	
	@RequestMapping(method = RequestMethod.POST, params="Añadir")
	public String guardaDireccion(@ModelAttribute("altaDomicilio")FormDomicilios altaDomicilio, BindingResult result, Model m){
		ODomicilios domicilio = new ODomicilios();
		domicilio.setCalle(altaDomicilio.getCalle());
		domicilio.setCodigo_postal(altaDomicilio.getCodigo_postal());
		domicilio.setColonia(altaDomicilio.getColonia());
		domicilio.setEstado(altaDomicilio.getEstado());
		domicilio.setId_persona(altaDomicilio.getId_persona());
		domicilio.setMunicipio(altaDomicilio.getMunicipio());
		domicilio.setNum_ext(altaDomicilio.getNum_ext());
		domicilio.setNum_int(altaDomicilio.getNum_int());
		domicilio.setObservaciones(altaDomicilio.getObservaciones());
		domicilio.setPais(altaDomicilio.getPais());
		domicilio.setPrincipal(altaDomicilio.getPrincipal());
		domicilio.setRegimen(altaDomicilio.getRegimen());
		domicilio.setTiempo(altaDomicilio.getTiempo());
		domicilio.setTipo_vivienda(altaDomicilio.getTipo_vivienda());
		domiciliosDao.setDomicilio(domicilio);
		altaDomicilio = new FormDomicilios();
		altaDomicilio.setSuccess("El domicilio se a agregado correctamente");
		return "/direcciones";
	}
	
	@RequestMapping(method = RequestMethod.POST, params = "Cancelar")
	public String cancelar(){
		return "redirect:admin";
	}
	
	@RequestMapping(method = RequestMethod.GET)
	public ModelAndView loadFormDomicilios(){
		FormDomicilios altaDomicilio = new FormDomicilios();
		ModelAndView mv = new ModelAndView();
		mv.setViewName("direcciones");
		mv.addObject("altaDomicilio", altaDomicilio);
		return mv;
	}
}
